<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //说一说es6新增了那些特性
        /**
         * let/const:let声明的变量没有变量提升 const声明的是常量
         * 箭头函数:箭头函数自带return，当只有一个条件的时候就可以省略不写
         * 模板字符串:用``反引号标识，用${}将变量括起来
         * 解构赋值:就是把对象或数组的属性或值提取出来，进行赋值给变量
         * 扩展运算符:就是把一个数组或对象的数据一个个拆出来
         * import和(export default/export):import导入 export default导出单个 export 导出数组或对象又或者是多个
         * promise
        */
    //说一说你对作用域链的理解
        /**
         * 作用域：变量和函数生效的区域
         * 作用域分为：全局作用域 局部作用域（函数作用域） 块级作用域
         * 全局作用域：任何地方都能访问的变量都是全局作用域
         * 局部作用域（函数作用域）：如果一个变量在函数内部声明，它的作用域就只在这个函数里面，外部访问不到 除了闭包
         * 块级作用域：es6新引入了let和const关键字和var关键字不同，在大括号里面用let/const声明的变量存在块级作用域  括号之外访问不到变量
         * 词法作用域（静态作用域）：变量被创建时作用域就被确定了 JavaScript遵循的就是词法作用域
         * 作用域链：
         * 在JavaScript中要使用一个变量时会先去当前作用域下去寻找该变量，如果没有找到再去他的上一层作用于去找直到找到该变量或者全局作用域
         * 如果在全局作用域也没有找到在严格模式下就会报错，非严格模式会隐式声明
        */
    //this对象的理解
        /**
         * this总是指向函数的直接调用者,如果有new关键字，this指向new出来的那个对象，在全局作用域中，this指向window对象
         * 构造函数中的this：构造函数就是通过new出来的一个对象this指向new出来的对象
         * 对象函数中的this： 当函数作为对象的一个属性时并且被调用时this指向该对象，如果函数不做为对象的属性被调用时this指向window
         * call和apply调用的this：当一个函数被call或者apply调用时this指向调用的对象
         * 
         * 
        */
</script>